When running software on large networked environments, it is sometimes more advantageous to execute a single instance of the application on one server by multiple tenants instead of executing separate instances of the application on several computers or virtual machines. Robust Fortune 500 applications may have long start-up and shut-down times, and may have high license costs which become expensive when deployed on several computer systems or virtual machines. In addition, it is easier to manage database traffic if only one application sends data access commands to a common database than if multiple application instances send data access commands to a common database.
WO2008042984 to Hofhansl and US20100005055 to An teaches a system and method for handling permissions for custom-made multi-tenant applications. Hofhansl and An, however, both require each programmer to customize each application to handle Hofhansl's system-specific package objects, version objects, and licensee objects, which requires a great deal of time and effort from each programmer. Hofhansl and all other extrinsic materials discussed herein are incorporated by reference in their entirety. Where a definition or use of a term in an incorporated reference is inconsistent or contrary to the definition of that term provided herein, the definition of that term provided herein applies and the definition of that term in the reference does not apply.
Unless the context dictates the contrary, all ranges set forth herein should be interpreted as being inclusive of their endpoints and open-ended ranges should be interpreted to include only commercially practical values. Similarly, all lists of values should be considered as inclusive of intermediate values unless the context indicates the contrary.
US20080270459 to Grewal teaches a multi-tenant architecture where each application instance shares a middle-tier module where above the module each tenant executes its own instance of the application and below the module each tenant has its own private non-shared database. Grewal, however, requires each CRM application to be specifically configured to be tenant-aware in order to utilize the middle-tier module.
US20090049056 to Shutt teaches multiple server computers, where each server computer runs a separate instance of an application. Each tenant is then assigned to share a specific server computer with other tenants, and also a shared database accessible only to that server computer. Again, Shutt requires each application to be specifically configured to be tenant-aware in order to pass tenant information onto each server computer.
US20050188345 to Chang teaches a method for converting a single-tenant application into a multi-tenant application by applying a series of steps that must be performed in order to programmatically make a single-tenant application tenant-aware so that it can be deployed in a multi-tenant architecture. Chang fails to provide a simple way for a single-tenant application to be installed into a multi-tenant architecture without programmatically altering the application architecture.
US20100005443 to Kwok teaches a system and method of using a non-tenant-aware application with a multi-tenancy database by utilizing an administration module that allows a user to build and store user tenant-related relationships between the multi-user non-tenant-aware application and the multi-tenancy database. Kwok's administration module, however, requires the application to connect to two separate databases, one for tenant-agnostic data access commands which is connected directly to the non-tenant-aware application, and one for tenant-specific data access commands which is connected to the non-tenant-aware application through the administration module. Kwok fails to provide a method where a single database module could be utilized for any kind of data access command. Kwok's method also requires a significant amount of programming changes and effort to modify the original application. US201000017415 to Kurumai is a similar patent application that requires a significant amount of programming required to modify the original non-tenant-specific application to interface with a tenant-specific database.
Thus, there is still a need for improved methods of transforming a single-tenant application to have multi-tenant capability without significantly altering the original single-tenant application architecture.